#ifndef MOD_MASTER_91A_H
#define MOD_MASTER_91A_H



/*===========================[Includes]======================================*/
#include <stdint.h>

#include "../../utils/list_node.h"

#include "../circuit_config.h"
#include "../circuit_node.h"



/*===========================[Defines]=======================================*/
#define GAS_ZONE_UPDATE_DATA_MAX    32  /**> 存储气灭分区中 分区火/报警状态的最大数量 */
/*===========================[Macros]========================================*/

/*===========================[Typedef]=======================================*/

/**
 * @brief 91A中的回路ID
 * 
 */
typedef enum {

    MOD_91A_CIRCUIT_PDFB1 = 0,
    MOD_91A_CIRCUIT_PDFB2,
    MOD_91A_CIRCUIT_ID_CAN_OUT1,
    MOD_91A_CIRCUIT_ID_CAN_IN1 ,

    MOD_91A_CIRCUIT_RS485_IN1,
    MOD_91A_CIRCUIT_RS485_OUT1,

    /** 适配91A，不需要这几个回路 ，*/
    // MOD_91A_CIRCUIT_DRY_POINT,
    // MOD_91A_CIRCUIT_EXTH_SPRAING,    // 灭火器喷洒策略回路
    // MOD_91A_CIRCUIT_PROTECT_ZONE,    // 防护区集合和路

    MOD_91A_CIRCUIT_MAX
} mod_master_91A_circuit_ID_t;


/*********************** 前置声明 ***************/

/** !!! 对下接的通用节点类型做前置声明 */
typedef struct circuit_node_t circuit_node_t;


/**
 * @brief 主界面中 91A状态显示
 * 
 */
typedef struct 
{
    uint8_t communication_status    :1; /**> 通讯状态 */
    uint8_t alarm_and_fire_status   :1; /**> 火/报警状态 */
    uint8_t fault_status            :1; /**> 故障状态 */
    uint8_t work_mode               :1; /**> 工作状态 */
    uint8_t linkage_status          :1; /**> 系统联动状态 */
    uint8_t urgent_switch_status    :1; /**> 启停按钮状态 */

}mode_91A_main_stauts_t;



/**
 * @brief 91A详细信息界面中的运行状态
 * 
 */
typedef struct 
{
    uint8_t communication_status            :1; /**> 通讯状态 */
    uint8_t main_power_status               :1; /**> 主电 */
    uint8_t back_power_status               :1; /**> 备电 */
    uint8_t fault_status                    :1; /**> 故障状态 */
    uint8_t fire_alarm_status               :1; /**> 火警 */
    uint8_t nomal_alarm_status              :1; /**> 一般报警 */
    uint8_t combination_alarm_status        :1; /**> 复合报警 */
    uint8_t reserve1                        :1; 
}mode_91A_running_stauts_t;

/**
 * @brief 气灭分区状态信息
 * 
 */
typedef struct 
{
    uint8_t active_status               :1; /**> 启动状态 */
    uint8_t delay_status                :1; /**> 延时状态 */
    uint8_t spray_status                :1; /**> 喷洒状态 */
    uint8_t spray_back_status           :1; /**> 喷洒反馈状态 */
    uint8_t sound_light_status          :1; /**> 声光状态 */
    uint8_t sound_light_fault_status    :1; /**> 声光故障状态 */
    uint8_t reserve1                    :1; 
    uint8_t reserve2                    :1;
}mode_91A_gas_exth_zone_status_t;


/**
 * @brief 气灭分区信息
 * 
 */
typedef struct 
{
    mode_91A_gas_exth_zone_status_t zone_status;            /**> 分区状态 */
    list_head_node                 gaszone_evt_list;    /**> 气灭分区报警事件链表 */
}mode_91A_gas_exth_zone_t;




/**
 * @brief 仓级主控制器设备的 实时状态信息
 * 
 */
typedef struct 
{
    mode_91A_main_stauts_t        main_interface_status;    /**> 主界面中91A状态 */
    mode_91A_running_stauts_t     running_status;           /**> 详细界面91A运行状态 */
    mode_91A_gas_exth_zone_t      gas_exth_zone_1;          /**> 气灭分区1信息 */

}RT_DATA_TYPE(TYPE_CTR_CW1320_91A);




/**
 * @brief 仓级主控制器设备的 配置信息
 * 
 */

typedef struct 
{
    node_tree_ptr_t     mod_91a_node_tree_ptr[MOD_91A_CIRCUIT_MAX];    
    char*               config_file_name;       /**配置文件名称 */ 
}CONFIG_INFO_TYPE(TYPE_CTR_CW1320_91A);



extern  node_operate_irf_t OP_FUNC_IRF(TYPE_CTR_CW1320_91A);



/*===========================[Global Prototypes]=============================*/






#endif